/*
* Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef EDM_TOOLS_EDM_INCLUDE_ENABLEADMIN_COMMAND_H
#define EDM_TOOLS_EDM_INCLUDE_ENABLEADMIN_COMMAND_H
#include "admin_type.h"
#include "icommand.h"

namespace OHOS {
namespace EDM {

class EnableAdminCommand : public ICommand {
public:
    EnableAdminCommand(int argc, char* argv[]);
    ErrCode Execute() override;
    [[nodiscard]] std::string GetUsage() const override;

private:
    struct Params {
        std::string bundleName;
        std::string abilityName;
        AdminType adminType = AdminType::ENT;
        bool showHelp = false;
    };

    ErrCode ParseArgs();
    ErrCode ParseArgs(bool &hasOption);
    ErrCode ParseMissingOptionArgs();
    ErrCode ConvertStringToAdminType(std::string optarg, AdminType &adminType);

    int argc_{};
    char** argv_{};
    Params params_;
};
} // namespace EDM
} // namespace OHOS

#endif // EDM_TOOLS_EDM_INCLUDE_ENABLEADMIN_COMMAND_H
